
package com.gustozzi.distribucion.negocio.impl;

import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Locale;

import com.gustozzi.distribucion.dao.SolicitudTransporteDAO;
import com.gustozzi.distribucion.dao.impl.SolicitudTransporteDAOImpl;
import com.gustozzi.distribucion.dao.util.DataAccess;
import com.gustozzi.distribucion.dao.util.DataAccessExceptions;
import com.gustozzi.distribucion.negocio.SolicitudTransporteBO;
import com.gustozzi.domain.SolicitudTransporte;
import com.gustozzi.domain.Transporte;

public class SolicitudTransporteBOImpl implements SolicitudTransporteBO
{

    DataAccess transaccionTransporte = new DataAccess("java:comp/env/jdbc/Distribucion");
    SolicitudTransporteDAO solicitudtransporteDAO = new SolicitudTransporteDAOImpl(transaccionTransporte);
    SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd/mm/yyyy", new Locale("es", "ES"));

    @Override
    public List<SolicitudTransporte> obtenerListaSolicitudTransporte(String codigo, String centro, String despacho,
            String placa, String fechaDesde, String fechaHasta) throws DataAccessExceptions
    {

        List<SolicitudTransporte> listaDespacho = null;
        int codigoDespacho = 0;
        int codigoCentro = 0;
        int codigoTrans = 0;
        Date desde = null;
        Date hasta = null;
        try
        {
            if (!fechaDesde.equalsIgnoreCase(""))
            {
                desde = new Date(sdf.parse(fechaDesde).getTime());
                hasta = new Date(sdf.parse(fechaHasta).getTime());
            }

            if (!codigo.equalsIgnoreCase(""))
            {
                codigoTrans = Integer.parseInt(codigo);
            }

            if (!despacho.equalsIgnoreCase(""))
            {
                codigoDespacho = Integer.parseInt(despacho);
            }
            if (!centro.equalsIgnoreCase(""))
            {
                codigoCentro = Integer.parseInt(centro);
            }

            listaDespacho = solicitudtransporteDAO.obtenerListaSolicitudTransporte(codigoTrans, codigoCentro,
                    codigoDespacho, placa, desde, hasta);
            System.out.println("COBRANZABOImplFin" + listaDespacho.size());
        }
        catch (Exception e)
        {
            throw new DataAccessExceptions();
        }

        return listaDespacho;
    }

    @Override
    public List<Transporte> obtenerDetalleSolicitud(List<SolicitudTransporte> listaSolicitudTransporte,
            String codigoSolicitud) throws DataAccessExceptions
    {

        List<Transporte> listaTransporte = null;

        try
        {

            listaTransporte = solicitudtransporteDAO.obtenerListaTransporte(listaSolicitudTransporte, codigoSolicitud);
        }
        catch (Exception e)
        {
            throw new DataAccessExceptions();
        }
        return listaTransporte;
    }

    @Override
    public String eliminarSolicitud(String codigo) throws DataAccessExceptions
    {
        String respuesta;
        try
        {
            respuesta = solicitudtransporteDAO.eliminarSolicitud(Integer.parseInt(codigo));
        }
        catch (Exception e)
        {
            throw new DataAccessExceptions();
        }
        return respuesta;
    }

    @Override
    public String guardarSolicitudTransporte(String codigo, String fechaCreacion, String desSolicitud, String peso,
            String fechaReq) throws DataAccessExceptions
    {

        int codigoSolicitudTransporte = -1;
        double pesoMax = 0.0;
        String respuesta = "";

        try
        {
            if (!codigo.equals("TEMP"))
            {
                codigoSolicitudTransporte = Integer.parseInt(codigo);
            }
            else
                codigoSolicitudTransporte = 0;

            if (!peso.equalsIgnoreCase(""))
            {
                pesoMax = Double.parseDouble(peso);
            }

            respuesta = solicitudtransporteDAO.guardarSolicitudTransporte(codigoSolicitudTransporte, fechaCreacion,
                    desSolicitud, pesoMax, fechaReq);

        }
        catch (Exception e)
        {
            throw new DataAccessExceptions();
        }
        return respuesta;

    }
}
